////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2017 Qualcomm Technologies, Inc.
// All Rights Reserved.
// Confidential and Proprietary - Qualcomm Technologies, Inc.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @file  camxtranslator.h
/// @brief Translation utility class
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#ifndef CAMXTRANSLATOR_H
#define CAMXTRANSLATOR_H

#include <stdio.h>
#include <stdarg.h>
#include "chicommontypes.h"

CAMX_NAMESPACE_BEGIN

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/// @brief Class that implements the Translator class
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class Translator
{
public:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// ConvertROIFromCurrentToReference
    ///
    /// @brief  Convert ROI values w.r.t current frame to values w.r.t reference Frame
    ///
    /// @param  pReferenceFrameDimension     Dimensions of reference frame
    /// @param  pCurrentFrameDimension       Dimensions of current frame
    /// @param  pCurrentFrameMapWrtReference Current frame map info w.r.t reference frame
    /// @param  pROIWrtCurrentFrame          ROI w.r.t current frame
    ///
    /// @return Calculated ROI w.r.t reference Frame
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static CHIRectangle ConvertROIFromCurrentToReference(
        const CHIDimension*  pReferenceFrameDimension,
        const CHIDimension*  pCurrentFrameDimension,
        const CHIRectangle*  pCurrentFrameMapWrtReference,
        const CHIRectangle*  pROIWrtCurrentFrame);

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// ConvertROIFromReferenceToCurrent
    ///
    /// @brief  Convert ROI values w.r.t reference frame to values w.r.t current Frame
    ///
    /// @param  pReferenceFrameDimension     Dimensions of reference frame
    /// @param  pCurrentFrameDimension       Dimensions of current frame
    /// @param  pCurrentFrameMapWrtReference Current frame map info w.r.t reference frame
    /// @param  pROIWrtReferenceFrame        ROI w.r.t current frame
    ///
    /// @return Calculated ROI w.r.t current frame
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    static CHIRectangle ConvertROIFromReferenceToCurrent(
        const CHIDimension*  pReferenceFrameDimension,
        const CHIDimension*  pCurrentFrameDimension,
        const CHIRectangle*  pCurrentFrameMapWrtReference,
        const CHIRectangle*  pROIWrtReferenceFrame);

private:
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /// Translator
    ///
    /// @brief Default constructor
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Translator() = default;
    Translator(const Translator&) = delete;
    Translator& operator=(const Translator&) = delete;
};

CAMX_NAMESPACE_END

#endif // CAMXTRANSLATOR_H